package com.ssy.lingxi.component.rabbitMQ.service;

import org.springframework.stereotype.Service;

/**
 * 
 * rabbitMQ工具类
 * @author jw.chen
 * @date 2020-08-01
 *
 */
@Service
public interface IRabbitMQUtils {
    /**
     * 发送信息
     * @param exchange      交换机
     * @param obj           消息体
     */
    void sendMsg(String exchange, Object obj);

    /**
     * 发送信息
     * @param exchange      交换机
     * @param routingKey    路由键
     * @param obj           消息体
     */
    void sendMsg(String exchange, String routingKey, Object obj);

    /**
     * 发送信息并且等消费端返回
     * @param exchange      交换机
     * @param routingKey    路由键
     * @param obj           消息体
     * @param timeOut       超时时间
     */
    Object sendAndReceiveMsg(String exchange, String routingKey, Object obj, long timeOut);

    /**
     * 发送信息
     * @param exchange      交换机
     * @param routingKey    路由键
     * @param obj           消息体
     * @param delayTime     延迟时间(单位为ms)
     */
    void sendMsg(String exchange, String routingKey, Object obj, long delayTime);

    /**
     * 接收消息
     * @param queueName 队列名称
     */
    Object receiveMsg(String queueName);
}
